/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.sgs.persist;

import br.com.sgs.basic.GenericDAO;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author MaUrO FiLhO
 */
@Entity
@javax.persistence.SequenceGenerator(name="contrato_id_contrato_seq", sequenceName="contrato_id_contrato_seq")
@Table(name = "contrato")
@NamedQueries({
    @NamedQuery(name = "Contrato.findAll", query = "SELECT c FROM Contrato c"),
    @NamedQuery(name = "Contrato.findByIdContrato", query = "SELECT c FROM Contrato c WHERE c.idContrato = :idContrato"),
    @NamedQuery(name = "Contrato.findByObjeto", query = "SELECT c FROM Contrato c WHERE c.objeto = :objeto"),
    @NamedQuery(name = "Contrato.findByValor", query = "SELECT c FROM Contrato c WHERE c.valor = :valor"),
    @NamedQuery(name = "Contrato.findByInicio", query = "SELECT c FROM Contrato c WHERE c.inicio = :inicio"),
    @NamedQuery(name = "Contrato.findByTermino", query = "SELECT c FROM Contrato c WHERE c.termino = :termino")})
public class Contrato implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator="contrato_id_contrato_seq")
    @Basic(optional = false)
    @Column(name = "id_contrato")
    private Integer idContrato;
    @Column(name = "objeto")
    private String objeto;
    @Column(name = "valor")
    private Float valor;
    @Basic(optional = false)
    @Column(name = "inicio")
    @Temporal(TemporalType.DATE)
    private Date inicio;
    @Basic(optional = false)
    @Column(name = "termino")
    @Temporal(TemporalType.DATE)
    private Date termino;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "contrato")
    private List<Obra> obraList;

    public Contrato() {
    }

    public Contrato(Integer idContrato) {
        this.idContrato = idContrato;
    }

    public Contrato(Integer idContrato, Date inicio, Date termino) {
        this.idContrato = idContrato;
        this.inicio = inicio;
        this.termino = termino;
    }

    public Integer getIdContrato() {
        return idContrato;
    }

    public void setIdContrato(Integer idContrato) {
        this.idContrato = idContrato;
    }

    public String getObjeto() {
        return objeto;
    }

    public void setObjeto(String objeto) {
        this.objeto = objeto;
    }

    public Float getValor() {
        return valor;
    }

    public void setValor(Float valor) {
        this.valor = valor;
    }

    public Date getInicio() {
        return inicio;
    }

    public void setInicio(Date inicio) {
        this.inicio = inicio;
    }

    public Date getTermino() {
        return termino;
    }

    public void setTermino(Date termino) {
        this.termino = termino;
    }

    public List<Obra> getObraList() {
        return obraList;
    }

    public void setObraList(List<Obra> obraList) {
        this.obraList = obraList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idContrato != null ? idContrato.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Contrato)) {
            return false;
        }
        Contrato other = (Contrato) object;
        if ((this.idContrato == null && other.idContrato != null) || (this.idContrato != null && !this.idContrato.equals(other.idContrato))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return getObjeto();
    }
    public static final String FALHA = "falha";
    public static final String SUCESSO = "sucesso";
    public static final String CANCELAR = "cancelar";

    public String cadastrarContrato(Contrato contrato) {
       GenericDAO DAO = new GenericDAO();
        String retorno = FALHA;
          try{
              DAO.inserir(contrato);
              retorno = SUCESSO;


           } catch (Exception e) {
              System.out.print(e);
              retorno = FALHA;
           }

        return retorno;
    }

    public String alterarContrato(Contrato contrato) {
        GenericDAO DAO = new GenericDAO();
        String retorno = FALHA;
        try{
        DAO.alterar(contrato);
        retorno = SUCESSO;
        }
        catch(Exception e){
        System.out.print(e);
        retorno = FALHA;
        }
        return retorno;
    }

    public String excluirContrato(Contrato contrato) {
       GenericDAO DAO = new GenericDAO();
        String retorno = FALHA;
        try{
        DAO.deletar(contrato);
        retorno = SUCESSO;
        }
        catch(Exception e){
        System.out.print(e);
        retorno = FALHA;
        }
        return retorno;
    }

    public String cancelarContrato() {
       return CANCELAR;
    }

}
